package com.czz.ucenter.controller;

import com.czz.common.exception.ResultCodeEnum;
import com.czz.common.vo.R;
import com.czz.ucenter.service.KaptchaService;
import com.czz.ucenter.vo.KaptchaVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;

/**
 * @ClassName: KaptchaController
 * @Author Czz
 * @Date 2020/3/31
 * @Time 18:25
 **/
@RestController
@RequestMapping(value = "/kaptcha")
public class KaptchaController {

    @Autowired
    KaptchaService KaptchaService;

    /**
    * @Description 生成图形验证码
    * @Param []
    * @Return com.czz.common.vo.R
    * @Author Czz
    * @Date 2020/3/31
    * @Time 18:33
    **/
    @GetMapping(value = "")
    public R getVerifyCode(){
        KaptchaVo kaptchaVo = KaptchaService.getVerifyCode();
        return R.ok().data("item",kaptchaVo);
    }

    /**
    * @Description 检验图形验证码是否有效
    * @Param [kaptchaVo]
    * @Return com.czz.common.vo.R
    * @Author Czz
    * @Date 2020/4/1
    * @Time 12:10
    **/
    @PostMapping(value = "")
    public R checkVerifyCode(KaptchaVo kaptchaVo){
        if (StringUtils.isEmpty(kaptchaVo.getCodeImg()) || StringUtils.isEmpty(kaptchaVo.getCodeToken())){
            return R.setResult(ResultCodeEnum.INPUT_ERROR);
        }
        Integer flag = KaptchaService.checkVerifyCode(kaptchaVo);

        if (flag.equals(0)) return R.ok();
        if (flag.equals(1)) return R.error().message("验证码过期，请刷新验证码");
        return R.error().message("验证码输入错误，请重新输入");
    }

    /**
    * @Description 更换图形验证码
    * @Param [kaptchaVo]
    * @Return com.czz.common.vo.R
    * @Author Czz
    * @Date 2020/4/1
    * @Time 16:09
    **/
    @PutMapping(value = "")
    public R updateVerifyCode(KaptchaVo kaptchaVo){
        if (StringUtils.isEmpty(kaptchaVo.getCodeImg()) || StringUtils.isEmpty(kaptchaVo.getCodeToken())){
            return R.setResult(ResultCodeEnum.INPUT_ERROR);
        }
        KaptchaVo updateCode = KaptchaService.updateVerifyCode(kaptchaVo);
        return R.ok().data("item",updateCode);
    }
}
